
import { spawnSync } from 'node:child_process'
import { input } from '@inquirer/prompts'
import ci from 'miniprogram-ci'

;(async () => {
  // 命令行交互
  const answers = {
    version: await input({ message: "请输入版本号:", validate: (input) => {
      if (input.length === 0) {
        return "版本号不能为空";
      }
      return true;
    } }),
    desc: await input({ message: "请输入描述:" }),
  };

  // 打包
  console.log('====================> 开始打包');
  spawnSync('pnpm', ['build:mp-weixin'])
  console.log('====================> 打包完成');

  // 小程序项目配置
  const project = new ci.Project({
    appid: 'wx3f936b98ab4da11f',
    type: 'miniProgram',
    projectPath: 'dist/build/mp-weixin',
    privateKeyPath: 'ci-script/private.key',
    ignores: ['node_modules/**/*'],
  });

  console.log('====================> 开始上传', answers);
  // 上传
  const uploadResult = await ci.upload({
    project,
    version: answers.version,
    desc: answers.desc,
    setting: {
      minifyWXML: true,         // 压缩 WXML 结构
      minifyJS: true,           // 压缩 JS 代码
      minifyWXSS: true,         // 压缩 WXSS 代码
      minify: true,             // 压缩上传的代码
      es6: false,               // 兼容 ES6 到 ES5
      es7: false,               // 兼容 ES7 到 ES5
      codeProtect: false,       // 上传后获取未压缩源码进行代码保护
      autoPrefixWXSS: false,    // 自动补全 CSS 单位
    },
    onProgressUpdate: console.log,
  })

  console.log('====================> 上传结果',uploadResult)

  process && process.exit(0)

})();